package com.hex.ds.hdtp.core.app.script.transfer.service;

import com.hex.ds.hdtp.core.app.common.page.PageData;
import com.hex.ds.hdtp.core.app.common.page.dto.PageDto;
import com.hex.ds.hdtp.core.app.license.activation.dto.response.ScriptConvertSurplusResponseDto;
import com.hex.ds.hdtp.core.app.script.transfer.dto.request.ScriptConvertTaskRequestDto;
import com.hex.ds.hdtp.core.app.script.transfer.dto.response.ScriptConvertTaskResponseDto;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.util.List;

/**
 * @Package: com.hex.ds.hdtp.core.app.transfer.script.service
 * @ClassName IScriptConvertTaskService
 * @Description: 脚本转换任务-业务服务接口
 * @Author: wz.li
 * @Date 2023/2/12 10:42
 * @Version v2.0.2
 **/
public interface IScriptConvertTaskService {

    /*
     * @Method: queryListByPage <br>
     * @Param: [scriptConvertTaskRequestDto, pageDto] <br>
     * @Return: com.hex.ds.hdtp.core.app.common.page.PageData <br>
     * @Description：分页查询<br>
     * @Author： wz.li<br>
     * @Date： 2023/8/14 10:39 <br>
     * @Version： V2.0.2<br>
     */
    PageData queryListByPage(ScriptConvertTaskRequestDto scriptConvertTaskRequestDto, PageDto pageDto);

    /*
     * @Method: queryById <br>
     * @Param: [pkId] <br>
     * @Return: com.hex.ds.hdtp.core.app.script.transfer.dto.response.ScriptConvertTaskResponseDto <br>
     * @Description：根据主键查询<br>
     * @Author： wz.li<br>
     * @Date： 2023/2/15 14:43 <br>
     * @Version： V2.0.2<br>
     */
    ScriptConvertTaskResponseDto queryById(String pkId);

    /*
     * @Method: add <br>
     * @Param: [scriptConvertTaskRequestDto, multipartFile] <br>
     * @Return: java.lang.String <br>
     * @Description：新增脚本转换任务<br>
     * @Author： wz.li<br>
     * @Date： 2023/2/12 11:50 <br>
     * @Version： V2.0.2<br>
     */
    String createTask(ScriptConvertTaskRequestDto scriptConvertTaskRequestDto);

    /*
     * @Method: modifyById <br>
     * @Param: [scriptConvertTaskRequestDto] <br>
     * @Return: void <br>
     * @Description：根据主键更新<br>
     * @Author： wz.li<br>
     * @Date： 2023/8/14 10:40 <br>
     * @Version： V2.0.2<br>
     */
    void modifyById(ScriptConvertTaskRequestDto scriptConvertTaskRequestDto);

    /*
     * @Method: modifySuccessNum <br>
     * @Param: [pkId] <br>
     * @Return: void <br>
     * @Description：更新成功数量<br>
     * @Author： wz.li<br>
     * @Date： 2023/2/15 16:03 <br>
     * @Version： V2.0.2<br>
     */
    void modifySuccessNum(String pkId);

    /**
     * @return int
     * @Method modifyFailNum
     * @Param [pkId] <br>
     * @Description 更新失败数量
     * @Author jian.qiao
     * @Date 2023/2/14 15:07
     * @Version V1.0
     */
    void modifyFailNum(String pkId);

    /*
     * @Method: batchRemoveById <br>
     * @Param: [pkIds] <br>
     * @Return: void <br>
     * @Description：根据主键批量删除<br>
     * @Author： wz.li<br>
     * @Date： 2023/2/12 10:55 <br>
     * @Version： V2.0.2<br>
     */
    void batchRemoveById(List<String> pkIds);

    /*
     * @Method: scriptConvert <br>
     * @Param: [pkIds] <br>
     * @Return: void <br>
     * @Description：脚本转换启动<br>
     * @Author： wz.li<br>
     * @Date： 2023/2/13 14:40 <br>
     * @Version： V2.0.2<br>
     */
    void scriptConvert(String pkId);


    /**
     * 获取脚本转换插件类型
     *
     * @return
     */
    List<String> scriptConvertType();

    /*
     * @Method: scriptVerify <br>
     * @Param: [pkId] <br>
     * @Return: void <br>
     * @Description：脚本验证<br>
     * @Author： wz.li<br>
     * @Date： 2023/8/14 20:21 <br>
     * @Version： V2.0.2<br>
     */
    void scriptVerify(String pkId);

    /*
     * @Method: upload <br>
     * @Param: [multipartFileList] <br>
     * @Return: java.util.List<java.io.File> <br>
     * @Description：上传转换脚本<br>
     * @Author： wz.li<br>
     * @Date： 2023/8/11 15:04 <br>
     * @Version： V2.0.2<br>
     */
    List<File> upload(List<MultipartFile> multipartFileList);


    /*
     * @Method: downloadFile <br>
     * @Param: [request, response, pkId] <br>
     * @Return: void <br>
     * @Description：下载源文件和转换后文件<br>
     * @Author： wz.li<br>
     * @Date： 2023/2/13 19:09 <br>
     * @Version： V2.0.2<br>
     */
    String downloadFile(String pkId);

    /*
     * @Method: downloadSourceFile <br>
     * @Param: [pkId] <br>
     * @Return: java.lang.String <br>
     * @Description：下载指定转换任务源文件<br>
     * @Author： wz.li<br>
     * @Date： 2023/8/14 10:34 <br>
     * @Version： V2.0.2<br>
     */
    String downloadSourceFile(String pkId);

    /*
     * @Method: downloadConvertFile <br>
     * @Param: [pkId] <br>
     * @Return: java.lang.String <br>
     * @Description：下载指定转换任务目标文件<br>
     * @Author： wz.li<br>
     * @Date： 2023/8/14 10:35 <br>
     * @Version： V2.0.2<br>
     */
    String downloadConvertFile(String pkId);

    /**
     * 获取脚本转换剩余量
     *
     * @return
     */
    ScriptConvertSurplusResponseDto getScriptConvertSurplus();

}

